#ifndef TOOLS_IMAGE_LOADER_HPP
#define TOOLS_IMAGE_LOADER_HPP

#include <opencv2/opencv.hpp>
#include <string>
#include <vector>

namespace toolsLib
{

class ImageLoader
{
  public:
    ImageLoader();
    ~ImageLoader();

    /**
     * @brief 从指定目录自动加载第一个找到的图像文件
     * @param directory_path 图像目录路径
     * @return 成功返回加载的图像，失败返回空的 cv::Mat
     */
    cv::Mat loadFirstImage(const std::string& directory_path);

    cv::Mat loadImage(const std::string& file_path);

  private:
    /**
     * @brief 检查文件是否为支持的图像格式
     * @param file_path 文件路径
     * @return 是图像格式返回 true，否则返回 false
     */
    bool                     isImageFile(const std::string& file_path);
    std::vector<std::string> supported_extensions_;

    /**
     * @brief 初始化支持的图像扩展名列表
     */
    void initializeSupportedExtensions();
};

}  // namespace toolsLib

#endif  // TOOLS_IMAGE_LOADER_HPP

